package com.sumainfor.pc.gmio.controller.assistant;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sumainfor.common.util.FieldCheckUtil;
import com.sumainfor.common.util.JsonResult;
import com.sumainfor.pc.gmio.service.RecycleHousingService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * @Author Jack Chen
 * @Create 2019-01-23 17:55
 * 业主提前收房
 */
@RestController
@RequestMapping("/recycleHousing")
public class RecycleHousingController {

    @Autowired
    private RecycleHousingService rhs;


    /**
     * 构建首页数据信息
     *
     * @param page
     * @param params 选择字段：
     *               State - 审核状态    1 已确认  0 待沟通
     *               deptId - 服务中心编号
     * @return
     */
    @RequestMapping("/selectRecycleDataList")
    public JsonResult selectRecycleDataList(Page page, @RequestParam Map<String, Object> params) {
        return rhs.selectRecycleDataList(page, params);
    }


    /**
     * 获得所服务中心列表
     *
     * @return
     */
    @RequestMapping("/getCenterList")
    public JsonResult getCenterList() {
        return rhs.getCenterList();
    }


    /**
     * 业主提前收房提交申请
     *
     * @param params 必须字段：
     *               MiId 服务中心编号
     *               ComId 项目编号
     *               HouId 房源编号
     *               OwId 业主编号
     *               CallNumber 联系号码
     *               RecycleTime 期望收回时间 期望收回时间 时间格式(yyyy-MM-dd)
     * @return
     */
    @PostMapping("/verifyRecycle")
    public JsonResult verifyRecycle(@RequestParam Map<String, Object> params) {
        String[] key = {"MiId", "ComId", "HouId", "OwId", "CallNumber", "RecycleTime"};
        if (!FieldCheckUtil.isMapFieldNotNull(params, key)) {
            return JsonResult.errorForEmpty();
        }
        return rhs.verifyRecycle(params);
    }


    ///////////////////////////////////////////////////////////////////////////
    // 业主信息变更审核
    ///////////////////////////////////////////////////////////////////////////

    /**
     * 业主信息变更
     *
     * @param page
     * @param params type:
     *               1.房源-业主联系人变更
     *               2.房源-收款人变更表
     *               3.房源-业主成员变更表
     *               <p>
     *               选择字段：
     *               State - 审核状态    0 待审核  1已审核
     *               deptId - 服务中心编号
     * @return
     */
    @RequestMapping("/getTableByType")
    public JsonResult getTableByType(Page page, @RequestParam Map<String, Object> params) {
        return rhs.getTableByType(page, params);
    }

    /**
     * 业主信息变更审核通过
     *
     * @param id   主键ID
     * @param type 类型：
     *             1.房源-业主联系人变更
     *             2.房源-收款人变更表
     *             3.房源-业主成员变更表
     * @return
     */
    @PostMapping("/verifySuccess")
    public JsonResult verifySuccess(Integer id, Integer type) {
        if (id == null || type == null) {
            return JsonResult.errorForEmpty();
        }
        return rhs.verifySuccess(id, type);
    }


    ///////////////////////////////////////////////////////////////////////////
    // 变更发起 - 提前收房申请
    ///////////////////////////////////////////////////////////////////////////

    /**
     * 通过业主手机号码去搜索业主的信息
     *
     * @param ownerPhone
     * @return
     */
    @RequestMapping("/searchOwnerInfo")
    public JsonResult searchOwnerInfo(String ownerPhone) {
        if (StringUtils.isBlank(ownerPhone)) {
            return JsonResult.errorForEmpty();
        }
        return rhs.searchOwnerInfo(ownerPhone);
    }


    /**
     * 通过业主编号查询这个业主的房源所在地理位置和业主信息
     *
     * @param signOwnerId
     * @return
     */
    @RequestMapping("/getAddressInfo")
    public JsonResult getAddressInfo(String signOwnerId) {
        if (StringUtils.isBlank(signOwnerId)) {
            return JsonResult.errorForEmpty();
        }
        return rhs.getAddressInfo(signOwnerId);
    }

    /**
     * 变更发起 联系人信息
     *
     * @param params 必须字段：
     *               MiId 服务中心编号
     *               ComId 项目编号
     *               HouId 房源编号
     *               OwId 业主编号
     *               OldContact 原联系人姓名
     *               OldPhone 原联系人电话
     *               NewContact 现联系人姓名
     *               NewPhone 现联系人电话
     * @return
     */
    @PostMapping("/submitChangeCallInfo")
    public JsonResult submitChangeCallInfo(@RequestParam Map<String, Object> params) {
        String[] key = {"MiId", "ComId", "HouId", "OwId", "OldContact", "OldPhone", "NewContact", "NewPhone"};
        if (!FieldCheckUtil.isMapFieldNotNull(params, key)) {
            return JsonResult.errorForEmpty();
        }
        return rhs.submitChangeCallInfo(params);
    }

    /**
     * 获取业主人员信息变更的原始数据
     *
     * @param houId
     * @return
     */
    @RequestMapping("/getOwnerPeopleData")
    public JsonResult getOwnerPeopleData(String houId) {
        if (StringUtils.isBlank(houId)) {
            return JsonResult.errorForEmpty();
        }
        return rhs.getOwnerPeopleData(houId);
    }

    /**
     * 变更发起提交改变业主人员信息
     *
     * @param params main:必须字段:
     *               MiId 服务中心编号
     *               ComId 项目编号
     *               HouId 房源编号
     *               OwId 业主编号
     * @return
     */
    @PostMapping("/submitOwnerPeopleChange")
    public JsonResult submitOwnerPeopleChange(@RequestBody Map<String, Object> params) {
        String[] key = {"MiId", "ComId", "HouId", "OwId", "dataList"};
        if (!FieldCheckUtil.isMapFieldNotNull(params, key)) {
            return JsonResult.errorForEmpty();
        }
        return rhs.submitOwnerPeopleChange(params);
    }


    /**
     * 根据业主信息 去查询业主原来的收款信息
     *
     * @param owId
     * @return
     */
    @RequestMapping("/getOwnerOldBlankInfo")
    public JsonResult getOwnerOldBlankInfo(String owId) {
        if (StringUtils.isBlank(owId)) {
            return JsonResult.errorForEmpty();
        }
        return rhs.getOwnerOldBlankInfo(owId);
    }

    /**
     * 变更发起提交改变业主收款信息
     *
     * @param params 必须的字段：
     *               MiId 服务中心编号
     *               ComId 项目编号
     *               HouId 房源编号
     *               OwId 业主编号
     *               NewPayee 现收款人姓名
     *               NewPayAccount 现收款人银行账号
     *               NewPayBank 现收款人收款银行
     * @return
     */
    @PostMapping("/submitBlankInfo")
    public JsonResult submitBlankInfo(@RequestParam Map<String, Object> params) {
        String[] key = {"MiId", "ComId", "HouId", "OwId", "NewPayee", "NewPayAccount", "NewPayBank"};
        if (!FieldCheckUtil.isMapFieldNotNull(params, key)) {
            return JsonResult.errorForEmpty();
        }
        return rhs.submitBlankInfo(params);
    }

}
